EDA workflow - #804
Conversation
…r_central_block(None))
+ self.jedi_rendering.add_key('saber_outer_block', self.config.saber_outer_block(None))
ens_mean_var read output from obs perturbed 3d-Var
{% for i in range( 1, models[model_component]['ensemble_num_members'] + 1 ) %}
{% for i in range(1, 5) %}
it is only 50% working
ensemble_block.py two_states.py state_ensemble.py IP.
- select minimal state variables / field_io_names - add `if state == ensemble` selection - correct typo filenames -> filename
…ding input/output dirnames in yaml
|
I tried running this suite and I did not use any override file and simply ran: and then launched the experiment. |
|
Hi All, as a rule the override file is not needed for PRs (excuse me for the confusion), otherwise the usage is diverging and thanks @jeromebarre for pointing this out. (My ensuring PRs will not contain it) |
I am unfamiliar with R2D2 so far, but it is definitely welcome to add more options. Currently as you may have found the EBKG path is hard coded in py and the obs are obtained from old script pointing to local IODA files on disk. The flow here only implemented the single point Analysis without any cycle. |
|
Thanks @mer-a-o for testing. There was a typo "==>" issue pointed out from @jeromebarre (corrected) and I think there is a keyword match pattern in |
Currently the the suite without overrides fetches obs from r2d2... |
|
@mer-a-o, the workflow now proceeds to generate all the graphics files, hence the eva filename not found problem is solved. |
That is nice and thanks for letting me know! |
|
@metdyn, while it is not a strict requirement it would be nice to get this in before next week's SWELL documentation sprint. Do you think this is ready to be merged in soon? |
|
Doruk, I believe it will be ready shortly! Thanks.
…On Mon, Aug 3, 2026 at 3:26 PM Doruk Ardağ ***@***.***> wrote:
*Dooruk* left a comment (GEOS-ESM/swell#804)
<#804 (comment)>
@metdyn <https://github.com/metdyn>, while it is not a strict requirement
it would be nice to get this in before next week's SWELL documentation
sprint. Do you think this is ready to be merged in soon?
—
Reply to this email directly, view it on GitHub
<#804?email_source=notifications&email_token=AIVBWODKTMXTMPTLNWJ6XNL5IDRNJA5CNFSNUABFM5UWIORPF5TWS5BNNB2WEL2JONZXKZKDN5WW2ZLOOQXTKMJXGA3TQNBYGE4KM4TFMFZW63VHNVSW45DJN5XKKZLWMVXHJLDGN5XXIZLSL5RWY2LDNM#issuecomment-5170784818>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AIVBWOGT5ZDOTYOCTKN5YQL5IDRNJAVCNFSNUABFKJSXA33TNF2G64TZHM2DKMRQGI4DGNJTHNEXG43VMU5TINRTGY2TGNBVHA32C5QC>
.
Triage notifications, keep track of coding agent tasks and review pull
requests on the go with GitHub Mobile for iOS
<https://github.com/notifications/mobile/ios/AIVBWOBBFSIUPGGG6GGAO5L5IDRNJA5CNFSNUABFM5UWIORPF5TWS5BNNB2WEL2JONZXKZKDN5WW2ZLOOQXTKMJXGA3TQNBYGE4KM4TFMFZW63VHNVSW45DJN5XKKZLWMVXHJKTGN5XXIZLSL5UW64Y>
and Android
<https://github.com/notifications/mobile/android/AIVBWOEUCQJW2DSFNO5PNF35IDRNJA5CNFSNUABFM5UWIORPF5TWS5BNNB2WEL2JONZXKZKDN5WW2ZLOOQXTKMJXGA3TQNBYGE4KM4TFMFZW63VHNVSW45DJN5XKKZLWMVXHJLTGN5XXIZLSL5QW4ZDSN5UWI>.
Download it today!
You are receiving this because you were mentioned.Message ID:
***@***.***>
|
|
@Dooruk, |
Sounds good. @jeromebarre you requested some changes and I don't want to dismiss them without your input. When you get a chance please take a final look so we can merge this. |
|
Will merge this tomorrow if we don't hear back from Jerome. |
|
I am away right now in a conference. Please go ahead and have this merged. Thanks! |
Description
This is a first step to make EDA workflow run within SWELL framework. These 32 ensemble members from @rtodling run independently on each node. Both GSI B and all observation type from 3dvar-atmos are used here. The single node run for each member is made possible with the current setting: C90 resolution using thinned observations (rejecting 80% of obs at random).
The memory usage on each node is roughly 72% (There are still details to work out and improve).
The overall workflow:
The EDA-3D implementation here is a jedi block-EDA version. It is a very mechanical version of the EDA method.
A conventional 3D-Var minimization is invoked for each member state and the resulting ensemble anlysis states are final products of 3D-EDA. The observation perturbation term is added to the cost function when the member is a perturbed state.
swell/src/swell/suites/eda/flow.cylc
Lines 79 to 81 in 35e846c
swell/src/swell/suites/eda/flow.cylc
Lines 170 to 179 in 35e846c
Each job submission completes one cost function minization for one member:
"swell task RunJediEdaExecutable $config -d $datetime -m {{model_component}} -imem {{i}}"
swell/src/swell/suites/eda/suite_config.py
Line 107 in 35e846c
Thinning can also be turned off by commenting out this line:
swell/src/swell/suites/eda/flow.cylc
Line 76 in 35e846c
swell/src/swell/suites/eda/flow.cylc
Lines 88 to 89 in 35e846c
The diagnostic tools:
For diagnostic purpose, we have designed handy codelets to compute mean/variance and diffstate (for increment, e.g.) in swell.
A. To compute the mean and variance of a set of states including bkg and analysis,
user can define the file specs for a list containing multiple entries where each can contain
its own input file, output file, and grid_type.
There are two ways to create the configure file.
Method-1. modify the EDA suite config file:
swell/src/swell/suites/eda/suite_config.py
Lines 108 to 119 in 35e846c
Method-2. create a section in override.yaml
and run:
swell create eda_atmos -o override.yamlto override the config defaultFinally to compute the mean and variance, run
swell task RunJediEnsembleMeanVariance PATHTO/experiment.yaml -d $date -m geos_atmosphereB. To compute the difference between two states, similar approaches can be used.
Method-1. modify the EDA suite config file:
swell/src/swell/suites/eda/suite_config.py
Lines 120 to 128 in 35e846c
Method-2. create an override section in override.yaml
and run:
swell create eda_atmos -o override.yamlto override the config defaultFinally to compute the diff states, run
swell task RunJediDiffstates PATHTO/experiment.yaml -d $date -m geos_atmosphereHow to run this block EDA code:
Example output: T mean increment at 500 hPa :

The work is advised by @rtodling.
@mranst makes the flow.cylc loop work for ensemble members.
Timing results
In progress
Additional features:
https://github.com/GEOS-ESM/swell/blob/35e846ce2371c9ac360ed13cf852082928bf922e/src/swell/configuration/jedi/interfaces/geos_atmosphere/model/background_error_eda_hybridB.py
A technical interesting part of the code is that I am using a string template in .py file, which is very useful here because it avoids writing 72 lines of pure real numbers into python code, and because we will need to tune and update this set of coefficient quite often later on, presumably. This is viewed as a transition back from python code to yaml style.
Issues
swell/src/swell/tasks/run_jedi_eda_executable.py
Lines 159 to 173 in 35e846c
Adding
air_pressure_levelsto the list ofanalysis variablewill break the 3D-Var code with hybrid-B. (I assume there is an issue with bump code) So I did not include it in the interface model config setup for EDA. Here my assumption is that always havingair_pressure_at_surfaceincluded inanalysis variablecan be sufficient.To do list: